package modelo;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

public class MinaPorContactoTests {

	private Municion minaPorContacto;
	private Coordenada posicion;
	
	@Before
	
	public void setUp(){
		posicion = new Coordenada(1,1);
		minaPorContacto = new MinaPorContacto(posicion);
	
	}

	@Test
	public void testElCostoDeUnaMinaPorContactoEs150Puntos(){
		
		Assert.assertEquals(minaPorContacto.getCosto(),150);
	
	}
	
	@Test
	
	public void testMinaPorContactoNoUsadaDebeDarFalse(){
	
		Assert.assertFalse(minaPorContacto.estaUsada());
	}
	
	@Test
	
	public void testMinaPorContactoUsadaEnPosicionVaciaDebeDarFalse(){
	
		minaPorContacto.atacar(null);
		Assert.assertFalse(minaPorContacto.estaUsada());
	
	}
	
	@Test
	public void testMinaPorContactoUsadaEnPosicionConPartesDebeDarTrue(){
		
		Coordenada  posicion = new Coordenada (1,1);
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
		minaPorContacto.atacar(lancha);
		Assert.assertTrue(minaPorContacto.estaUsada());
	
	}
	
	@Test
	public void testMinaPorContactoUsadaEnPosicionesConPartesDebeDestruir(){
		
		Coordenada  posicion = new Coordenada (1,1);
		Movimiento movimiento = new MovimientoAlSur();
		Orientacion miOrientacion = new OrientacionHorizontal();
		Nave lancha = new Lancha(posicion,movimiento,miOrientacion);
		
		minaPorContacto = new MinaPorContacto(posicion);
		minaPorContacto.atacar(lancha);
		posicion = new Coordenada(2,1);
		minaPorContacto = new MinaPorContacto(posicion);
		minaPorContacto.atacar(lancha);
		
		Assert.assertTrue(lancha.estaDestruida());
	}
}
